home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 6
/
64er_Magazin_Sonderheft_06_86-06_1986_Markt__Technik_de_Disk_1_of_3_Side_B.d64
/
cent'hardcpy src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
5KB
|
169 lines
10 ;++++++++++++++++++++++++++++++++
20 ;+++++ +++++
30 ;+++++ hardcopy fuer +++++
40 ;+++++ centronics drucker +++++
50 ;+++++ (star sg) +++++
60 ;+++++ am user-port +++++
70 ;++++++++++++++++++++++++++++++++
80 ;+++++ +++++++++++
90 ;+++++ von +++++++++++
100 ;+++++ richard gresek +++++++++++
110 ;+++++ +++++++++++
120 ;++++++++++++++++++++++++++++++++
130 .li1,3
140 .ba$7000
150 ;
160 ;
170 ;++++++++++++++++++++++++++++++++
180 ;ausrechnen der +++++++++++++
190 ;startadresse der +++++++++++++
200 ;bitmap,pruefen +++++++++++++
210 ;ob graphic ein +++++++++++++
220 ;++++++++++++++++++++++++++++++++
230 start lda$d018;bits 12-13
240 and#$0c;der bitmap
250 asl;ins hi-byte
260 asl
270 asl
280 asl
290 stanby+2
300 lda$dd00;bits14-15 aus cia2 holen
310 lsr
320 rornby+2;ins hi-byte schieben
330 lsr
340 rornby+2
350 ldanby+2;bits 1-2 der cia2 low-aktiv
360 eor#$c0;deshalb umkehren mit eor #%1100 0000
370 stanby+2;und zuruck ins hi-byte des bitmapzeiger
380 lda#00
390 stanby+1;lo-byte des bitmapzeiger = 0
400 lda$d011;bit5=1 =>hi-res graphic ein=> ausdrucken
410 and#32
420 bnebegin
430 rts;bit5=0 >zuruck ins hauptprogramm
440 ;++++++++++++++++++++++++++++++++
450 ;hauptprogramm ++++++++++++++++
460 ;++++++++++++++++++++++++++++++++
470 begin sei;interrupt abschalten
480 lda#$35;ganzes ram bis auf i/o
490 sta01;einblenden
500 lda#$ff;port b cia2 auf augang
510 sta$dd03
520 lda#<(zeabst+3);endadresse
530 ldy#>(zeabst+3)
540 stacontl+1
550 styconth+1
560 lda#<(zeabst);startadresse
570 ldy#>(zeabst);der bytefolge fuer zeilenabstand 8/72 inch
580 jsrstrout;bytefolge auf parallel-port ausgeben
590 lda#25;25 zeilen*40 spalten
600 stazeile
610 zei lda#40
620 staspalte
630 spa lda#8;8 byte in jedem kaestchen
640 stabyz
650 by ldy#8
660 nby lda$6000;byte aus bitmap holen
670 loop ldx#01;+++++++++++++++++++++++++++++++++++++++
680 loo rol;bit nr.x ins carry
690 dex
700 bneloo;+++++++++++++++++++++++++++++++++++++++
710 st rolschl;carry ins aktuelle byte einfuegen
720 incnby+1;+++++++++++++++++++++++++++++++++++++++
730 bnewe;bitmapzeiger erhoehen
740 incnby+2;+++++++++++++++++++++++++++++++++++++++
750 we dey;schon 8 bit zusammen?
760 bnenby;nein >naechstes byte holen
770 incloop+1;naechste bitspalte
780 sec
790 ldanby+1;+++++++++++++++++++++++++++++++++++++++++++++++
800 sbc#8;bitmapzeiger auf byte nr.1 der naechsten spalte
810 stanby+1;setzen
820 ldanby+2
830 sbc#00
840 stanby+2;+++++++++++++++++++++++++++++++++++++++
850 incst+1;zeiger auf aktuelles byte im ausgabestring
860 bnewe1; erhoehen
870 incst+2;+++++++++++++++++++++++++++++++++++++++
880 we1 decbyz;alle 8 byte des kaestchens fertig?
890 bneby;nein=>sprung
900 lda#01;1.bitspalte der naechsten spalte
910 staloop+1
920 clc;+++++++++++++++++++++++++++++++++++++++
930 ldanby+1;bitmapzeiger auf 1.byte der naechsten spalte
940 adc#8;stellen
950 stanby+1
960 ldanby+2
970 adc#00
980 stanby+2;+++++++++++++++++++++++++++++++++++++++
990 decspalte;zeile fertig?
1000 bnespa;nein >neachste spalte
1010 lda#<(zeabst);++++++++++++++++++++++++++++++++++++++++
1020 ldy#>(zeabst);graphic-einschaltsequenz schicken
1030 stacontl+1;(vor jeder zeile)
1040 styconth+1
1050 lda#<(einsch)
1060 ldy#>(einsch)
1070 jsrstrout;++++++++++++++++++++++++++++++++++++++++
1080 lda#<(schl+$140)
1090 stacontl+1;zusammengestellte graphiczeile
1100 lda#>(schl+$140)
1110 staconth+1;auf einmal ausgeben
1120 lda#<(schl)
1130 stast+1
1140 ldy#>(schl)
1150 styst+2
1160 jsrstrout;+++++++++++++++++++++++++++++++++++++++
1170 lda#13;return auf drucker schicken (neue zeile)
1180 jsrcout
1190 deczeile;alle zeilen fertig?
1200 bneze;nein>naechste zeile
1210 lda#$37;basic+kernal einschalten
1220 sta01
1230 cli;irq zulassen
1240 rts
1250 ;++++++++++++++++++++++++++++++++
1260 ;strout-ausgabe eines ++++++++
1270 ;beliebig langen strings ++++++++
1280 ;auf parallelport ++++++++
1290 ; ++++++++
1300 ;++++++++++++++++++++++++++++++++
1310 strout stylade+2;hi-byte der startadr.
1320 stalade+1;lo-byte --"--
1330 lade lda$2000;byte des string holen
1340 jsrcout;auf port ausgeben
1350 inclade+1;zeiger erhoehen
1360 bnewe2
1370 inclade+2
1380 we2 ldalade+2
1390 conth cmp#$41;hi-byte der akt. adresse=hi-b(endadr.)?
1400 bnelade;nein >weiter
1410 ldalade+1;lo-byte der adresse=lo-b(endadr.)?
1420 contl cmp#64
1430 bmilade;nein >weiter
1440 rts;zurueck ins hauptprogramm
1450 ze jmpzei
1460 ;-----------------------------
1470 einsch .by27,103,5,64,1;sequenz zum einschalten des graphicmodus
1480 zeabst .by27,65,8;zeilenabstand 8/72 inch
1490 ;++++++++++++++++++++++++++++++++
1500 cout sta$dd01;daten auf leitung
1510 lda$dd0d;icr loeschen
1520 lda$dd00;
1530 and#$fb;pa2 (strobe)-signal
1540 sta$dd00
1550 ora#04;=>zeichen fuer
1560 sta$dd00;'data auf leitung'
1570 lda#$10;flag2-busy
1580 warte bit$dd0d;busy low?
1590 beqwarte;+> nein
1600 rts
1610 ;+++++++++++++++++++++++++++++++
1620 ; variablen ++++++++++++
1630 ;+++++++++++++++++++++++++++++++
1640 zeile nop;zeilenzaehler
1650 spalte nop;spaltenzaehler
1660 byz nop;bytezaehler fuer jedes kaestchen
1670 ;+++++++++++++++++++++++++++++++
1680 schl nop;anfang des auszugebenden strings